home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / rfc / rfc1484 < prev    next >
Text File  |  1993-07-27  |  49KB  |  1,404 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                               S. Hardcastle-Kille
  8. Request for Comments: 1484                             ISODE Consortium
  9.                                                               July 1993
  10.  
  11.  
  12.                    Using the OSI Directory to achieve
  13.                           User Friendly Naming
  14.                            (OSI-DS 24 (v1.2))
  15.  
  16. Status of this Memo
  17.  
  18.    This memo defines an Experimental Protocol for the Internet
  19.    community.  It does not specify an Internet standard.  Discussion and
  20.    suggestions for improvement are requested.  Please refer to the
  21.    current edition of the "IAB Official Protocol Standards" for the
  22.    standardization state and status of this protocol.  Distribution of
  23.    this memo is unlimited.
  24.  
  25. Abstract
  26.  
  27.    The OSI Directory has user friendly naming as a goal.  A simple
  28.    minded usage of the directory does not achieve this.  Two aspects not
  29.    achieved are:
  30.  
  31.       o A user oriented notation
  32.  
  33.       o Guessability
  34.  
  35.    This proposal sets out some conventions for representing names in a
  36.    friendly manner, and shows how this can be used to achieve really
  37.    friendly naming.  This then leads to a specification of a format for
  38.    representing names, and to procedures to resolve them.  This leads to
  39.    a specification which allows directory names to be communicated
  40.    between humans.  The format in this specification is identical to
  41.    that defined in [HK93], and it is intended that these specifications
  42.    are compatible.  Please send comments to the author or to the
  43.    discussion group: <osi-ds@CS.UCL.AC.UK>.
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Hardcastle-Kille                                                [Page 1]
  59.  
  60. RFC 1484                  User Friendly Naming                 July 1993
  61.  
  62.  
  63. Table of Contents
  64.  
  65.    1.  Why a notation is needed......................................  2
  66.    2.  The Notation..................................................  3
  67.    3.  Communicating Directory Names.................................  8
  68.    4.  Matching a purported name.....................................  9
  69.    4.1 Environment................................................... 10
  70.    4.2 Matching...................................................... 12
  71.    4.3 Top Level..................................................... 13
  72.    4.4 Intermediate Level............................................ 14
  73.    4.5 Bottom Level.................................................. 15
  74.    5.  Examples...................................................... 15
  75.    6.  Support required from the standard............................ 16
  76.    7.  Support of OSI Services....................................... 16
  77.    8.  Experience.................................................... 17
  78.    9.  Relationship to other work.................................... 18
  79.    10. Issues........................................................ 19
  80.    11. References.................................................... 20
  81.    12. Security Considerations....................................... 21
  82.    13. Author's Address.............................................. 21
  83.    A.  Pseudo-code for the matching algorithm ....................... 21
  84.  
  85. List of Figures
  86.  
  87.    1. Example usage of User Friendly Naming.......................... 18
  88.    2. Matching Algorithm............................................. 25
  89.  
  90. List of Tables
  91.  
  92.    1. Local environment for private DUA.............................. 11
  93.    2. Local environment for US Public DUA............................ 11
  94.  
  95. 1.  Why a notation is needed
  96.  
  97.    Many OSI Applications make use of Distinguished Names (DN) as defined
  98.    in the OSI Directory [CCI88].  The main reason for having a notation
  99.    for name format is to interact with a user interface.  This
  100.    specification is coming dangerously close to the sin of standardising
  101.    interfaces.  However, there are aspects of presentation which it is
  102.    desirable to standardise.
  103.  
  104.    It is important to have a common format to be able to conveniently
  105.    refer to names.  This might be done to represent a directory name on
  106.    a business card or in an email message.  There is a need for a format
  107.    to support human to human communication, which must be string based
  108.    (not ASN.1) and user oriented.
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Hardcastle-Kille                                                [Page 2]
  115.  
  116. RFC 1484                  User Friendly Naming                 July 1993
  117.  
  118.  
  119.    In very many cases, a user will be required to input a name.  This
  120.    notation is designed to allow this to happen in a uniform manner
  121.    across many user interfaces.  The intention is that the name can just
  122.    be typed in.  There should not be any need to engage in form filling
  123.    or complex dialogue.
  124.  
  125.    It should be possible to take the "human" description given at the
  126.    meeting, and use it directly.  The means in which this happens will
  127.    become clear later.
  128.  
  129.    This approach uses the syntax defined in RFC1485 for representing
  130.    distinguished names [HK93].  By relaxing some of the constraints on
  131.    this specification, it is argued that a more user oriented
  132.    specification is produced.  However, this syntax cannot be mapped
  133.    algorithmically onto a distinguished name without the use of a
  134.    directory.
  135.  
  136.    This notation is targeted towards a general user oriented system, and
  137.    in particular to represent the names of humans.  Other syntaxes may
  138.    be more appropriate for other uses of the directory.  For example,
  139.    the OSF Syntax may be more appropriate for some system oriented uses.
  140.    (The OSF Syntax uses "/" as a separator, and forms names in a manner
  141.    intended to resemble UNIX filenames).
  142.  
  143.    This notation is targeted towards names which follow a particular DIT
  144.    structure: organisationally oriented.  This may make it inappropriate
  145.    for some types of application.  There may be a requirement to extend
  146.    this notation to deal more cleanly with fully geographical names.
  147.  
  148.    This approach effectively defines a definition of descriptive names
  149.    on top of the primitive names defined by the OSI Directory.
  150.  
  151. 2.  The Notation
  152.  
  153.    The notation used in this specification is defined in [HK93].  This
  154.    notation defines an unambiguous representation of distinguished name,
  155.    and this specification is designed to be used in conjunction with
  156.    this format.  Both specifications arise from the same piece of
  157.    research work [Kil90].  Some examples of the specification are given
  158.    here.
  159.  
  160.    The author's User Friendly Name (UFN) might be written:
  161.  
  162.       Steve Hardcastle-Kille, Computer Science, University College
  163.       London, GB
  164.  
  165.    or
  166.  
  167.  
  168.  
  169.  
  170. Hardcastle-Kille                                                [Page 3]
  171.  
  172. RFC 1484                  User Friendly Naming                 July 1993
  173.  
  174.  
  175.       S. Hardcastle-Kille, Computer Science, University College London,
  176.       GB
  177.  
  178.    This may be folded, perhaps to display in multi-column format. For
  179.    example:
  180.  
  181.       Steve Hardcastle-Kille,
  182.       Computer Science,
  183.       University College London,
  184.       GB
  185.  
  186.    Another UFN might be:
  187.  
  188.       Christian Huitema, INRIA, FR
  189.  
  190.    or
  191.  
  192.       James Hacker,
  193.       Basingstoke,
  194.       Widget Inc,
  195.       GB
  196.  
  197.    The final example shows quoting of a comma in an Organisation name:
  198.  
  199.       L. Eagle, "Sue, Grabbit and Runn", GB
  200.  
  201.    A purported name is what a user supplies to an interface for
  202.    resolution into one or more distinguished names.  A system should
  203.    almost always store a name as a distinguished name.  This will be
  204.    more efficient, and avoid problems with purported names which become
  205.    ambiguous when a new name appears.  A user interface may display a
  206.    distinguished name, using the distinguished name notation.  However,
  207.    it may display a purported name in cases where this will be more
  208.    pleasing to the user.  Examples of this might be:
  209.  
  210.      o  Omission of the higher components of the distinguished name are
  211.         not displayed (abbreviation).
  212.  
  213.      o  Omission of attribute types, where the type is unlikely to be
  214.         needed to resolve ambiguity.
  215.  
  216.    The ways in which a purported name may vary from a distinguished name
  217.    are now described:
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Hardcastle-Kille                                                [Page 4]
  227.  
  228. RFC 1484                  User Friendly Naming                 July 1993
  229.  
  230.  
  231.    Type Omission
  232.  
  233.    There are two cases of this.
  234.  
  235.      o  Schema defaulting.  In this case, although the type is not
  236.         present, a schema defaulting is used to deduce the type.  The
  237.         first two types of schema defaulting may be used to deduce a
  238.         distinguished name without the use of the directory.  The use
  239.         of schema defaulting may be useful to improve the performance
  240.         of UFN resolution.  The types of schema defaulting are:
  241.  
  242.          --  Default Schema
  243.  
  244.          --  Context Dependent Default Schema
  245.  
  246.          --  Data Dependent Default Schema
  247.  
  248.      o  Omission of the type to be resolved by searching.
  249.  
  250.    Default Schema
  251.  
  252.    The attribute type of an attribute may always be present.  This may
  253.    be done to emphasise the type structure of a name.  In some cases,
  254.    the typing may be omitted.  This is done in a way so that in many
  255.    common cases, no attribute types are needed.  The following type
  256.    hierarchy (schema) is assumed:
  257.  
  258.       Common Name, (((Organisational Unit)*,  Organisation,) Country)
  259.  
  260.    Explicitly typed RDNs may be inserted into this hierarchy at any
  261.    point.  The least significant component is always of type Common
  262.    Name.  Other types follow the defined organisational hierarchy.  The
  263.    following are equivalent:
  264.  
  265.       Filestore Access, Bells, Computer Science,
  266.       University College London, GB
  267.  
  268.    and
  269.  
  270.       CN=Filestore Access, OU=Bells, OU=Computer Science,
  271.       O=University College London, C=GB
  272.  
  273.    To interpet a distinguished name presented in this format, with some
  274.    or all of the attributes with the type not specified, the types are
  275.    derived according to the type hierarchy by the following algorithm:
  276.  
  277.       1.  If the first attribute type is not specified, it is
  278.           CommonName.
  279.  
  280.  
  281.  
  282. Hardcastle-Kille                                                [Page 5]
  283.  
  284. RFC 1484                  User Friendly Naming                 July 1993
  285.  
  286.  
  287.       2.  If the last attribute type is not specified, it is Country.
  288.  
  289.       3.  If there is no organisation explicitly specified, the last
  290.           attribute with type not specified is of type Organisation.
  291.  
  292.       4.  Any remaining attribute with type unspecified must be before
  293.           an Organisation or OrganisationalUnit attribute, and is of
  294.           type OrganisationalUnit.
  295.  
  296.    To take a distinguished name, and generate a name of this format with
  297.    attribute types omitted, the following steps are followed.
  298.  
  299.       1. If the first attribute is of type CommonName, the type may be
  300.          omitted.
  301.  
  302.       2. If the last attribute is of type Country, the type may be
  303.          omitted.
  304.  
  305.       3. If the last attribute is of type Country, the last Organisation
  306.          attribute may have the type omitted.
  307.  
  308.       4. All attributes of type OrganisationalUnit may have the type
  309.          omitted, unless they are after an Organisation attribute or
  310.          the first attribute is of type OrganisationalUnit.
  311.  
  312.    Context Dependent Default Schema
  313.  
  314.    The distinguished name notation defines a fixed schema for type
  315.    defaulting.  It may be useful to have different defaults in different
  316.    contexts.  For example, the defaulting convention may be applied in a
  317.    modified fashion to objects which are known not to be common name
  318.    objects.  This will always be followed if the least significant
  319.    component is explicitly typed.  In this case, the following hierarchy
  320.    is followed:
  321.  
  322.              ((Organisational Unit)*,  Organisation,) Country
  323.  
  324.    Data Dependent Defaulting
  325.  
  326.    There are cases where it would be optimal to default according to the
  327.    data.  For example, in:
  328.  
  329.       Einar Stefferud, Network Management Associates, CA, US
  330.  
  331.    It would be useful to default "CA" to type State.  This might be done
  332.    by defaulting all two letter attributes under C=US to type State.
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Hardcastle-Kille                                                [Page 6]
  339.  
  340. RFC 1484                  User Friendly Naming                 July 1993
  341.  
  342.  
  343.    General Defaulting
  344.  
  345.    A type may be omitted in cases where it does not follow a default
  346.    schema hierarchy, and then type variants can be explored by
  347.    searching.  Thus a distinguished name could be represented by a
  348.    uniquely matching purported name.  For example,
  349.  
  350.       James Hacker,
  351.       Basingstoke,
  352.       Widget Inc,
  353.       GB
  354.  
  355.    Would match the distinguished name:
  356.  
  357.       CN=James Hacker,
  358.       L=Basingstoke,
  359.       O=Widget Inc,
  360.       CN=GB
  361.  
  362.    Abbreviation
  363.  
  364.    Some of the more significant components of the DN will be omitted,
  365.    and then defaulted in some way (e.g., relative to a local context).
  366.    For example:
  367.  
  368.       Steve Hardcastle-Kille
  369.  
  370.    Could be interpreted in the context of an organisational default.
  371.  
  372.    Local Type Keywords
  373.  
  374.    Local values can be used to identify types, in addition to the
  375.    keywords defined in [HK93].  For example, "Organisation" may be
  376.    recognised as an alternative to "O".
  377.  
  378.    Component Omission
  379.  
  380.    An intermediate component of the name may be omitted.  Typically this
  381.    will be an organisational unit.  For example:
  382.  
  383.       Steve Hardcastle-Kille, University College London, GB
  384.  
  385.    In some cases, this can be combined with abbreviation.  For example:
  386.  
  387.       Steve Hardcastle-Kille, University College London
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Hardcastle-Kille                                                [Page 7]
  395.  
  396. RFC 1484                  User Friendly Naming                 July 1993
  397.  
  398.  
  399.    Approximation
  400.  
  401.    Approximate renditions or alternate values of one or more of the
  402.    components will be supplied.  For example:
  403.  
  404.       Stephen Hardcastle-Kille, CS, UCL, GB
  405.  
  406.    or
  407.  
  408.       Steve Keill, Comp Sci, Univarstiy College London, GB
  409.  
  410.    Friendly Country
  411.  
  412.    A "friendly country name" can be used instead of the ISO 3166 two
  413.    letter code.  For example:
  414.  
  415.       UK; USA; France; Deutchland.
  416.  
  417. 3.  Communicating Directory Names
  418.  
  419.    A goal of this standard is to provide a means of communicating
  420.    directory names.  Two approaches are given, one defined in [HK93],
  421.    and the other here.  A future version of these specifications may
  422.    contain only one of these approaches, or recommend use of one
  423.    approach.  The approach can usually be distinguished implicitly, as
  424.    types are normally omitted in the UFN approach, and are always
  425.    present in the Distinguished Name approach.  No recommendation is
  426.    made here, but the merits of each approach is given.
  427.  
  428.       1. Distinguished Name or DN. A representation of the distinguished
  429.          name, according to the specification of [HK93].
  430.  
  431.       2. User Friendly Name or UFN. A purported name, which is expected
  432.          to unambiguously resolve onto the distinguished name.
  433.  
  434.    When a UFN is communicated, a form which should efficiently and
  435.    unambiguously resolve onto a distinguished name should be chosen.
  436.    Thus it is reasonable to omit types, or to use alternate values which
  437.    will unambiguously identify the entry in question (e.g., by use of an
  438.    alternate value of the RDN attribute type).  It is not reasonable to
  439.    use keys which are (or are likely to become) ambiguous.
  440.  
  441.    The approach used should be implicit from the context, rather than
  442.    wired into the syntax.  The terms "Directory Name" and "X.500 Name"
  443.    should be used to refer to a name which might be either a DN or UFN.
  444.    An example of appropriate usage of both forms is given in the Section
  445.    which defines the Author's location in section 12.
  446.  
  447.  
  448.  
  449.  
  450. Hardcastle-Kille                                                [Page 8]
  451.  
  452. RFC 1484                  User Friendly Naming                 July 1993
  453.  
  454.  
  455.    Advantages of communicating the DN are:
  456.  
  457.       o The Distinguished Name is an unambiguous and stable reference to
  458.         the user.
  459.  
  460.       o The DN will be used efficiently by the directory to obtain
  461.         information.
  462.  
  463.    Advantages of communicating the UFN are:
  464.  
  465.       o Redundant type information can be omitted (e.g., "California",
  466.         rather than "State=California", where there is known to be no
  467.         ambiguity.
  468.  
  469.       o Alternate values can be used to identify a component.  This might
  470.         be used to select a value which is meaningful to the recipient, or
  471.         to use a shorter form of the name.  Often the uniqueness
  472.         requirements of registration will lead to long names, which users
  473.         will wish to avoid.
  474.  
  475.       o Levels of the hierarchy may be omitted.  For example in a very
  476.         small organisation, where a level of hierarchy has been used to
  477.         represent company structure, and the person has a unique name
  478.         within the organisation.
  479.  
  480.    Where UFN form is used, it is important to specify an unambiguous
  481.    form.  In some ways, this is analogous to writing a postal address.
  482.    There are many legal ways to write it.  Care needs to be taken to
  483.    make the address unambiguous.
  484.  
  485. 4.  Matching a purported name
  486.  
  487.    The following approach specifies a default algorithm to be used with
  488.    the User Friendly Naming approach.  It is appropriate to modify this
  489.    algorithm, and future specifications may propose alternative
  490.    algorithms.  Two simple algorithms are noted in passing, which may be
  491.    useful in some contexts:
  492.  
  493.       1. Use type omission only, but otherwise require the value of the
  494.          RDN attribute to be present.
  495.  
  496.       2. Require each RDN to be identified as in 1), or by an exact
  497.          match on an alternate value of the RDN attribute.
  498.  
  499.    These algorithms do not offer the flexibility of the default
  500.    algorithm proposed, but give many of the benefits of the approach in
  501.    a very simple manner.
  502.  
  503.  
  504.  
  505.  
  506. Hardcastle-Kille                                                [Page 9]
  507.  
  508. RFC 1484                  User Friendly Naming                 July 1993
  509.  
  510.  
  511.    The major utility of the purported name is to provide the important
  512.    "user friendly" characteristic of guessability.  A user will supply a
  513.    purported name to a user interface, and this will be resolved onto a
  514.    distinguished name.  When a user supplies a purported name there is a
  515.    need to derive the DN. In most cases, it should be possible to derive
  516.    a single name from the purported name.  In some cases, ambiguities
  517.    will arise and the user will be prompted to select from a multiple
  518.    matches.  This should also be the case where a component of the name
  519.    did not "match very well".
  520.  
  521.    There is an assumption that the user will simply enter the name
  522.    correctly.  The purported name variants are designed to make this
  523.    happen!  There is no need for fancy window based interfaces or form
  524.    filling for many applications of the directory.  Note that the fancy
  525.    interfaces still have a role for browsing, and for more complex
  526.    matching.  This type of naming is to deal with cases where
  527.    information on a known user is desired and keyed on the user's name.
  528.  
  529. 4.1  Environment
  530.  
  531.    All matches occur in the context of a local environment.  The local
  532.    environment defines a sequence of name of a non-leaf objects in the
  533.    DIT. This environment effectively defines a list of acceptable name
  534.    abbreviations where the DUA is employed.  The environment should be
  535.    controllable by the individual user.  It also defines an order in
  536.    which to operate.
  537.  
  538.    This list is defined in the context of the number of name components
  539.    supplied.  This allows varying heuristics, depending on the
  540.    environment, to make the approach have the "right" behaviour.
  541.  
  542.    In most cases, the environment will start at a local point in the
  543.    DIT, and move upwards.  Examples are given in Tables 1 and 2.  Table
  544.    1 shows an example for a typical local DUA, which has the following
  545.    characteristics:
  546.  
  547.    One component
  548.  
  549.    Assumed first to be a user in the department, then a user or
  550.    department within the university, the a national organisation, and
  551.    finally a country.
  552.  
  553.    Two components
  554.  
  555.    Most significant component is first assumed to be a national
  556.    organisation, then a department (this might be reversed in some
  557.    organisations), and finally a country.
  558.  
  559.  
  560.  
  561.  
  562. Hardcastle-Kille                                               [Page 10]
  563.  
  564. RFC 1484                  User Friendly Naming                 July 1993
  565.  
  566.  
  567.    Three or more components
  568.  
  569.    The most significant component is first assumed to be a country, then
  570.    a national organisation, and finally a department.
  571.  
  572.            +----------------------------------------------------+
  573.            | Number of  |  Environment                          |
  574.            | Components |                                       |
  575.            +----------------------------------------------------+
  576.            | 1          | Physics, University College London, GB|
  577.            |            | University College London, GB         |
  578.            |            | GB                                    |
  579.            |            | __                                    |
  580.            +----------------------------------------------------+
  581.            | 2          | GB                                    |
  582.            |            | University College London, GB         |
  583.            |            | __                                    |
  584.            +----------------------------------------------------+
  585.            | 3+         | __                                    |
  586.            |            | GB                                    |
  587.            |            | University College London, GB         |
  588.            +----------------------------------------------------+
  589.  
  590.                 Table 1:  Local environment for private DUA
  591.  
  592.                  +--------------------------------------+
  593.                  | Number of  | Environment             |
  594.                  | Components |                         |
  595.                  +--------------------------------------+
  596.                  | 1,2        | US                      |
  597.                  |            | CA                      |
  598.                  |            | __                      |
  599.                  +--------------------------------------+
  600.                  | 3+         | __                      |
  601.                  |            | US                      |
  602.                  |            | CA                      |
  603.                  +--------------------------------------+
  604.  
  605.                Table 2:  Local environment for US Public DUA
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Hardcastle-Kille                                               [Page 11]
  619.  
  620. RFC 1484                  User Friendly Naming                 July 1993
  621.  
  622.  
  623. 4.2  Matching
  624.  
  625.    A purported name will be supplied, usually with a small number of
  626.    components.  This will be matched in the context of an environment.
  627.    Where there are multiple components to be matched, these should be
  628.    matched sequentially.  If an unambiguous DN is determined, the match
  629.    continues as if the full DN had been supplied.  For example if
  630.  
  631.       Stephen Hardcastle-Kille, UCL
  632.  
  633.    is being matched in the context of environment GB, first UCL is
  634.    resolved to the distinguished name:
  635.  
  636.       University College London, GB
  637.  
  638.    Then the next component of the purported name is taken to determine
  639.    the final name.  If there is an ambiguity (e.g., if UCL had made two
  640.    matches, both paths are explored to see if the ambiguity can be
  641.    resolved.  Eventually a set of names will be passed back to the user.
  642.  
  643.    Each component of the environment is taken in turn.  If the purported
  644.    name has more components than the maximum depth, the environment
  645.    element is skipped.  The advantage of this will be seen in the
  646.    example given later.
  647.  
  648.    A match of a name is considered to have three levels:
  649.  
  650.    Exact
  651.  
  652.    A DN is specified exactly
  653.  
  654.    Good
  655.  
  656.    Initially, a match should be considered good if it is unambiguous,
  657.    and exactly matches an attribute value in the entry.  For human
  658.    names, a looser metric is probably desirable (e.g., S Hardcastle-
  659.    Kille should be a good match of S. Hardcastle-Kille, S.E.
  660.    Hardcastle-Kille or Steve Hardcastle-Kille even if these are not
  661.    explicit alternate values).
  662.  
  663.    Poor
  664.  
  665.    Any other substring or approximate match
  666.  
  667.    Following a match, the reference can be followed, or the user
  668.    prompted.  If there are multiple matches, more than one path may be
  669.    followed.  There is also a shift/reduce type of choice:  should any
  670.    partial matches be followed or should the next element of the
  671.  
  672.  
  673.  
  674. Hardcastle-Kille                                               [Page 12]
  675.  
  676. RFC 1484                  User Friendly Naming                 July 1993
  677.  
  678.  
  679.    environment be tried.  The following heuristics are suggested, which
  680.    may be modified in the light of experience.  The overall aim is to
  681.    resolve cleanly specified names with a minimum of fuss, but give
  682.    sufficient user control to prevent undue searching and delay.
  683.  
  684.       1. Always follow an exact match.
  685.  
  686.       2. Follow all good matches if there are no exact matches.
  687.  
  688.       3. If there are only poor matches, prompt the user.  If the user
  689.          accepts one or more match, they can be considered as good.
  690.          If all are rejected, this can be treated as no matches.
  691.  
  692.       4. Automatically move to the next element of the environment if no
  693.          matches are found.
  694.  
  695.    When the final component is matched, a set of names will be
  696.    identified.  If none are identified, proceed to the next environment
  697.    element.  If the user rejects all of the names, processing of the
  698.    next environment element should be confirmed.
  699.  
  700.    The exact approach to matching will depend on the level of the tree
  701.    at which matching is being done.  We can now consider how attributes
  702.    are matched at various levels of the DIT.
  703.  
  704.    There is an issue of approximate matching.  Sometimes it helps, and
  705.    sometimes just returns many spurious matches.  When a search is
  706.    requested, all relevant attributes should be returned, so that
  707.    distinguished and non-distinguished values can be looked at.  This
  708.    will allow a distinction to be made between good and poor matches.
  709.    It is important that where, for example, an acronym exactly matches
  710.    an organisation, that the user is not prompted about other
  711.    organisations where it matches as a substring.
  712.  
  713. 4.3  Top Level
  714.  
  715.    In this case, a match is being done at the root of the DIT. Three
  716.    approaches are suggested, dependent on the length of supplied name.
  717.    All lead to a single level search of the top level of the DIT.
  718.  
  719.    Exactly 2
  720.  
  721.    This is assumed to be a 3166 two letter country code, or an exact
  722.    match on a friendly country or organisation (e.g., UK or UN). Do
  723.    exact match on country and friendly country.
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Hardcastle-Kille                                               [Page 13]
  731.  
  732. RFC 1484                  User Friendly Naming                 July 1993
  733.  
  734.  
  735.    Greater than 2
  736.  
  737.    Make an approximate and substring match on friendly country and
  738.    organisation.
  739.  
  740. 4.4  Intermediate Level
  741.  
  742.    Once the root level has been dealt with, intermediate levels will be
  743.    looking for organisational components (Organisation, Locality, Org
  744.    Unit).  In some cases, private schema control will allow the system
  745.    to determine which is at the next level.  In general this will not be
  746.    possible.  In each case, make a substring and approximate match
  747.    search of one level.  The choice depends on the base object used in
  748.    the search.
  749.  
  750.       1. If DN has no Organisation or Locality, filter on Organisation
  751.          and Locality.
  752.  
  753.       2. If DN has Org Unit, filter on Org Unit.
  754.  
  755.       3. If DN has Organisation, filter on Locality and Org Unit.
  756.  
  757.       4. If DN has Locality, filter on Organisation.
  758.  
  759.    These allow some optimisation, based on legal choices of schema.
  760.    Keeping filters short is usually desirable to improve performance.
  761.  
  762.    A few examples of this, where a base object has been determined
  763.    (either by being the environment or by partial resolution of a
  764.    purported name), and the next element of a purported name is being
  765.    considered.  This will generate a single level search.  What varies
  766.    is the types being filtered against.  If the DN is:
  767.  
  768.       University College London, GB
  769.  
  770.    The search should be for Org Unit or Locality.  If the DN is:
  771.  
  772.       Organisation=UN
  773.  
  774.    the search should be for Org Unit or Locality.
  775.  
  776.    There may be some improvements with respect to very short keys.  Not
  777.    making approximate or substring matches in these cases seems
  778.    sensible. (It might be desirable to allow "*" as a part of the
  779.    purported name notation).
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Hardcastle-Kille                                               [Page 14]
  787.  
  788. RFC 1484                  User Friendly Naming                 July 1993
  789.  
  790.  
  791. 4.5  Bottom Level
  792.  
  793.    The "Bottom Level" is to deal with leaf entries in the DIT. This will
  794.    often be a person, but may also be a role, an application entity or
  795.    something else.
  796.  
  797.    The last component of a purported name may either reference a leaf or
  798.    non-leaf.  For this reason, both should be tested for.  As a
  799.    heuristic, if the base object for the search has two or more
  800.    components it should be tested first as a bottom level name and then
  801.    intermediate.  Reverse this for shorter names.  This optimises for
  802.    the (normal) case of non-leaves high up the tree and leaves low down
  803.    the tree.
  804.  
  805.    For bottom level names, make an approximate and substring match
  806.    against Common Name, Surname, and User ID. Where common name is
  807.    looked for, a full subtree search will be used when at the second
  808.    level of the DIT or lower, otherwise a single level search.
  809.  
  810.    For example, if I have resolved a purported name to the distinguished
  811.    name
  812.  
  813.       University College London, GB
  814.  
  815.    and have a single component Bloggs, this will generate a subtree
  816.    search.
  817.  
  818. 5.  Examples
  819.  
  820.    This is all somewhat confusing, and a few examples are given.  These
  821.    are all in the context of the environment shown in Table 1 in section
  822.    4.1.
  823.  
  824.    If "Joe Bloggs" is supplied, a subtree search of
  825.  
  826.       Physics, University College London, GB
  827.  
  828.    will be made, and the user prompted for "Joseph Z. Bloggs" as the
  829.    only possible match.
  830.  
  831.    If "Computer Science" is supplied, first
  832.  
  833.       Physics, University College London, GB
  834.  
  835.    will be searched, and the user will reject the approximate match of
  836.    "Colin Skin".  Then a subtree search of
  837.  
  838.       University College London, GB
  839.  
  840.  
  841.  
  842. Hardcastle-Kille                                               [Page 15]
  843.  
  844. RFC 1484                  User Friendly Naming                 July 1993
  845.  
  846.  
  847.    will be made, looking for a person.  Then a single level search will
  848.    be made looking for Org Unit, and
  849.  
  850.       Computer Science, University College London, GB
  851.  
  852.    will be returned without prompting (exact match).  Supplying "Steve
  853.    Hardcastle-Kille" will lead to a failed subtree search of
  854.  
  855.       Physics, University College London, GB
  856.  
  857.    and lead straight to a subtree search of
  858.  
  859.       University College London, GB
  860.  
  861.    This will lead to an exact value match, and so a single entry
  862.    returned without prompting.
  863.  
  864.    If "Andrew Findlay, Brunel" is supplied, the first element of the
  865.    environment will be skipped, single level search of "Brunel" under
  866.    "GB" will find:
  867.  
  868.       Brunel University, GB
  869.  
  870.    and a subtree search for "Andrew Findlay" initiated.  This will yield
  871.  
  872.       Andrew Findlay, Computing and Media Services, Brunel University,
  873.       GB
  874.  
  875.       Dr A J Findlay, Manufacturing and Engineering Systems, Brunel
  876.       University, GB
  877.  
  878.    and the user will be prompted with a choice.
  879.  
  880.    This approach shows how a simple format of this nature will "do the
  881.    right thing" in many cases.
  882.  
  883. 6.  Support required from the standard
  884.  
  885.    Fortunately, all that is needed is there!  It would be useful to have
  886.    "friendly country name" as a standard attribute.
  887.  
  888. 7.  Support of OSI Services
  889.  
  890.    The major focus of this work has been to provide a mechanism for
  891.    identifying Organisations and Users.  A related function is to
  892.    identify applications.  Where the Application is identified by an AET
  893.    (Application Entity Title) with an RDN of Common Name, this
  894.    specification leads to a natural usage.  For example, if a filestore
  895.  
  896.  
  897.  
  898. Hardcastle-Kille                                               [Page 16]
  899.  
  900. RFC 1484                  User Friendly Naming                 July 1993
  901.  
  902.  
  903.    in named "gannet", then this could easily be identified by the name:
  904.  
  905.       Gannet, Computer Laboratory, Cambridge University, GB
  906.  
  907.    In normal usage, this might lead to access (using a purported name)
  908.    of:
  909.  
  910.       FTAM gannet,cambridge
  911.  
  912.    A second type of access is where the user identifies an Organisation
  913.    (Organisational Unit), and expects to obtain a default service.  The
  914.    service is implied by the application, and should not require any
  915.    additional naming as far as the user is concerned.  It is proposed
  916.    that this is supported by User Friendly Naming in the following way.
  917.  
  918.  
  919.       1. Determine that the purported name identifies a non-leaf
  920.          object, which is of object class Organisation or Organisational
  921.          Unit or Locality.
  922.  
  923.       2. Perform a single level search for Application Entities which
  924.          support the required application contexts.  This assumes that
  925.          all services which are supporting default access for the
  926.          organisation are registered at one level below (possibly by the
  927.          use of aliases), and that other services (specific machines or
  928.          parts of the organisation) are represented further down the
  929.          tree. This seems to be a reasonable layout, and its utility can
  930.          be evaluated by experiment.
  931.  
  932. 8. Experience
  933.  
  934.    An experimental implementation of this has been written by Colin
  935.    Robbins.  The example in Figure 1 shows that it can be very effective
  936.    at locating known individuals with a minimum of effort.  This code
  937.    has been deployed within the "FRED" interface of the PSI Pilot
  938.    [Ros90], and within an prototype interface for managing distribution
  939.    lists.  The user reaction has been favourable.
  940.  
  941.    Some issues have arisen from this experience:
  942.  
  943.      o Where there is more than one level of Organisational Unit, and
  944.        the user guesses one which is not immediately below the
  945.        organisation, the algorithm works badly.  There does not appear
  946.        to be an easy fix for this.  It is not clear if this is a serious
  947.        deficiency.
  948.  
  949.      o Substring searching is currently done with leading and trailing
  950.        wildcards.  As many implementations will not implement leading
  951.  
  952.  
  953.  
  954. Hardcastle-Kille                                               [Page 17]
  955.  
  956. RFC 1484                  User Friendly Naming                 July 1993
  957.  
  958.  
  959.        wildcards efficiently, it may be preferable to only use trailing
  960.        wildcards.  The effect of this on the algorithm needs to be
  961.        investigated.
  962.  
  963.    Implementors of this specification are encouraged to investigate
  964.    variants of the basic algorithm.  A final specification should depend
  965.    on experience with such variants.
  966.  
  967.       -> t hales, csiro, australia
  968.       Found good match(es) for 'australia'
  969.       Found exact match(es) for 'csiro'
  970.       Please select from the following:
  971.          Trevor Hales, OC, HPCC, DIT, IICT, CSIRO, AU [y/n] ? y
  972.       The following were matched...
  973.          Trevor Hales, OC, HPCC, DIT, IICT, CSIRO, AU
  974.  
  975.       -> g michaelson, queensland, au
  976.       Found exact match(es) for 'au'
  977.       Please select from the following:
  978.          University of Queensland, AU [y/n] ? y
  979.          Axolotl, AU [y/n] ? n
  980.       Please select from the following:
  981.          George Michaelson, Prentice Computer Centre, University of
  982.       Queensland, AU [y/n] ? y
  983.          Manager, University of Queensland, AU [y/n] ? n
  984.       The following were matched...
  985.          George Michaelson, Prentice Computer Centre, University of
  986.        Queensland, AU
  987.  
  988.       -> r needham, cambridge
  989.       Found good match(es) for 'cambridge'
  990.       Please select from the following:
  991.          Roger Needham, Computer Lab, Cambridge University [y/n] ? y
  992.       The following were matched...
  993.          Roger Needham, Computer Lab, Cambridge University
  994.  
  995.       -> kirstein
  996.       Found good match(es) for 'kirstein'
  997.       The following were matched...
  998.          Peter Kirstein
  999.  
  1000.                Figure 1:  Example usage of User Friendly Naming
  1001.  
  1002. 9. Relationship to other work
  1003.  
  1004.    Colin Robbin's work on the interface "Tom" and implementation of a
  1005.    distribution list interface strongly influenced this specification
  1006.    [KRRT90].
  1007.  
  1008.  
  1009.  
  1010. Hardcastle-Kille                                               [Page 18]
  1011.  
  1012. RFC 1484                  User Friendly Naming                 July 1993
  1013.  
  1014.  
  1015.    Some of the ideas used here originally came from a UK Proposal to the
  1016.    ISO/CCITT Directory Group on "New Name Forms" [Kil89a].  This
  1017.    defined, and showed how to implement, four different types of names:
  1018.  
  1019.    Typed and Ordered
  1020.  
  1021.    The current Distinguished Name is a restricted example of this type
  1022.    of name.
  1023.  
  1024.    Untyped and Ordered
  1025.  
  1026.    This is the type of name proposed here (with some extensions to allow
  1027.    optional typing).  It is seen as meeting the key user requirement of
  1028.    disliking typed names, and is efficient to implement.
  1029.  
  1030.    Typed and Unordered
  1031.  
  1032.    This sort of name is proposed by others as the key basis for user
  1033.    friendly naming.  Neufeld shows how X.500 can be used to provide this
  1034.    [Neu89], and Peterson proposes the Profile system to provide this
  1035.    [Pet88].  The author contends that whilst typed naming is interesting
  1036.    for some types of searching (e.g., yellow page searching), it is less
  1037.    desirable for naming objects.  This is born out by operational
  1038.    experience with OSI Directories [Kil89b].
  1039.  
  1040.    Untyped and Unordered
  1041.  
  1042.    Surprisingly this form of name can be supported quite easily.
  1043.    However, a considerable gain in efficiency can be achieved by
  1044.    requiring ordering.  In practice, users can supply this easily.
  1045.    Therefore, this type of name is not proposed.
  1046.  
  1047. 10.  Issues
  1048.  
  1049.    The following issues are noted, which would need to be resolved
  1050.    before this document is progressed as an Internet Standard.
  1051.  
  1052.    Potential Ambiguity
  1053.  
  1054.    Whilst the intention of the notation is to allow for specification of
  1055.    alternate values, it inherently allows for ambiguous names to be
  1056.    specified.  It needs to be demonstrated that problems of this
  1057.    characteristic are outweighed by other benefits of the notation.
  1058.  
  1059.    Utility
  1060.  
  1061.    Determine that the specification is being implemented and used.
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Hardcastle-Kille                                               [Page 19]
  1067.  
  1068. RFC 1484                  User Friendly Naming                 July 1993
  1069.  
  1070.  
  1071.    Performance
  1072.  
  1073.    Measurements on the performance implications of using this approach
  1074.    should be made.
  1075.  
  1076.    Alogrithm
  1077.  
  1078.    The utility of the algorithm, and possible variants, should be
  1079.    investigated.
  1080.  
  1081.    This format, and the procedures for resolving purported names, should
  1082.    be evolved.  The syntax can be expected to be stable.  In light of
  1083.    experience, the algorithm for resolving purported names may be
  1084.    changed.
  1085.  
  1086. 11.  References
  1087.  
  1088.    [CCI88]  The Directory --- overview of concepts, models and services,
  1089.             December 1988. CCITT X.500 Series Recommendations.
  1090.  
  1091.    [HK93]   S.E. Hardcastle-Kille. A string representation of
  1092.             distinguished names.  RFC 1485, Department of Computer
  1093.             Science, University College London, July 1993.
  1094.  
  1095.    [Kil89a] S.E. Kille. New name forms, May 1989.  ISO/IEC/JTC 21/
  1096.             WG4/N797 UK National Body Contribution to the Oslo Directory
  1097.             Meeting.
  1098.  
  1099.    [Kil89b] S.E. Kille. The THORN large scale pilot exercise.  Computer
  1100.             Networks and ISDN Systems, 16(1):143--145, January 1989.
  1101.  
  1102.    [Kil90]  S.E. Kille. Using the OSI directory to achieve user friendly
  1103.             naming. Research Note RN/20/29, Department of Computer
  1104.             Science, University College London, February 1990.
  1105.  
  1106.    [KRRT90] S.E. Kille, C.J. Robbins, M. Roe, and A. Turland. The ISO
  1107.             development environment:  User's manual (version 6.0),
  1108.             January 1990. Volume 5:  QUIPU.
  1109.  
  1110.    [Neu89]  G.W. Neufeld. Descriptive names in X.500.  In SIGCOMM 89
  1111.             Symposiun Communications Architectures and Protocols, pages
  1112.             64--71, September 1989.
  1113.  
  1114.    [Pet88]  L.L. Petersen. The profile naming service.  ACM Transactions
  1115.             on Computing Systems, 6(4):341--364, November 1988.
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Hardcastle-Kille                                               [Page 20]
  1123.  
  1124. RFC 1484                  User Friendly Naming                 July 1993
  1125.  
  1126.  
  1127.    [Ros90]  M.T. Rose. Realizing the White Pages using the OSI Directory
  1128.             Service. Technical Report 90--05--10--1, Performance Systems
  1129.             International, Inc., May 1990.
  1130.  
  1131. 12.  Security Considerations
  1132.  
  1133.       Security issues are not discussed in this memo.
  1134.  
  1135. 13.  Author's Address
  1136.  
  1137.    Steve Hardcastle-Kille
  1138.    ISODE Consortium
  1139.    P.O. Box 505
  1140.    London
  1141.    SW11 1DX
  1142.    England
  1143.  
  1144.    Phone:+44-71-223-4062
  1145.  
  1146.    EMail:  S.Kille@ISODE.COM
  1147.  
  1148.    DN: CN=Steve Hardcastle-Kille,
  1149.    O=ISODE Consortium, C=GB
  1150.  
  1151.    UFN: S. Hardcastle-Kille,
  1152.    ISODE Consortium, GB
  1153.  
  1154. A.  Pseudo-code for the matching algorithm
  1155.  
  1156.    The following pseudo-code is intended to clarify the matching
  1157.    algorithm.  The language uses ASN.1 data types, with flow control
  1158.    "C"-like,but with keywords upper--cased.
  1159.    ____________________________________________________________________
  1160.  
  1161. PurportedName ::= SEQUENCE OF String
  1162.                 -- simplication, as attribute types can optionally be
  1163.                 -- specified
  1164.  
  1165.                 -- Each element of the Purported Name is a string
  1166.                 -- which has been parsed from the BNF
  1167.  
  1168. Attribute ::= SEQUENCE {                                            10
  1169.         type OBJECT IDENTIFIER,
  1170.         value ANY }
  1171.  
  1172. RDN ::= Attribute -- simplification, as can be multi-value
  1173.  
  1174. DN ::= SEQUENCE OF RDN
  1175.  
  1176.  
  1177.  
  1178. Hardcastle-Kille                                               [Page 21]
  1179.  
  1180. RFC 1484                  User Friendly Naming                 July 1993
  1181.  
  1182.  
  1183. Environment ::= SEQUENCE OF DN
  1184.  
  1185.                                                                     20
  1186. EnvironmentList ::= SEQUENCE OF SEQUENCE {
  1187.                         lower-bound INTEGER,
  1188.                         upper-bound INTEGER,
  1189.                         environment Environment }
  1190.  
  1191.  
  1192. friendlyMatch(p:  PurportedName; el:  EnvironmentList):    SET OF DN
  1193. {
  1194.                                 -- Find correct environment
  1195.                                                                     30
  1196.         IF length(el) == 0 THEN return(NULL);
  1197.  
  1198.         IF length(p) <= head(el).upper-bound
  1199.                         && length(p) >= head(el).lower-bound THEN
  1200.                 return envMatch (p, head(el).environment);
  1201.         ELSE
  1202.                 return(friendlyMatch(p, tail(el));
  1203. }
  1204.                                                                     40
  1205. envMatch(p:  PurportedName; e:  Environment):    SET OF DN
  1206. {
  1207.                                 -- Check elements of environment
  1208.                                 -- in the defined order
  1209.  
  1210.         matches:  SET OF DN;
  1211.  
  1212.         IF length(e) == 0 THEN return(NULL);
  1213.  
  1214.         matches = purportedMatch(head(e).DN, p)                     50
  1215.         IF matches != NULL THEN
  1216.                 return(matches);
  1217.         ELSE
  1218.                 return(envMatch(p, tail(e));
  1219. }
  1220. purportedMatch(base:  DN; p:  PurportedName):  SET OF DN
  1221. {
  1222.         s:  String = head(p);                                       60
  1223.         matches:  SET OF DN = NULL;
  1224.  
  1225.         IF length(p) == 1 THEN
  1226.                 IF length(base) == 0 THEN
  1227.                         IF (matches = rootSearch(s)) != NULL THEN
  1228.                                 return(matches);
  1229.                         ELSE return(leafSearch(base, s, one-level);
  1230.                 ELSE IF length(base) == 1 THEN
  1231.  
  1232.  
  1233.  
  1234. Hardcastle-Kille                                               [Page 22]
  1235.  
  1236. RFC 1484                  User Friendly Naming                 July 1993
  1237.  
  1238.  
  1239.                         IF (matches = intSearch(base, s)) != NULL THEN
  1240.                                 return(matches);                    70
  1241.                         ELSE return(leafSearch(base, s, one-level);
  1242.                 ELSE
  1243.                         IF (matches = leafSearch(base, s, subtree)) !=
  1244.                 NULL THEN
  1245.                                 return(matches);
  1246.                         ELSE return(intsearch(base, s);
  1247.  
  1248.         IF length(base) == 0 THEN
  1249.                 FOR x IN rootSearch(s) DO
  1250.                         matches += (purportedMatch(x, tail(p));     80
  1251.         ELSE
  1252.  
  1253.                 FOR x IN intSearch(base, s) DO
  1254.                         matches += (purportedMatch(x, tail(p));
  1255.         return(matches);
  1256. }
  1257. -- General.    Might need to tighten the filter for short strings,
  1258. -- in order to stop being flooded.    Alternatively, this could be
  1259. -- done if the loose search hists a size limit                      90
  1260.  
  1261. rootSearch(s:  String):  SET OF DN
  1262. {
  1263.         IF length(s) == 2 THEN
  1264.                 return(search(NULL, one-level, s, {CountryName,
  1265.                         FriendlyCountryName, OrganizationName},
  1266.                         {exact}, {Country, Organisation}));
  1267.                         -- test exact match only
  1268.                         -- probably a country code
  1269.         ELSE                                                       100
  1270.                 return(search(NULL, one-level, s, {OrganizationName,
  1271.                         FriendlyCountryName}, {substring, approx},
  1272.                         {Country, Organisation}));
  1273. }
  1274.  
  1275. intSearch( base:  DN; s:  String)
  1276. {
  1277.         IF present(base, OrgUnitName) THEN
  1278.                 return(search(base, one-level, s, {OrgUnitName},   110
  1279.                         {substring, approx}, {OrgUnit}));
  1280.         ELSE IF present(base, OrganisationName) THEN
  1281.                 return(search(base, one-level, s, {OrgUnitName,
  1282.                         LocalityName}, {substring, approx},
  1283.                         {Organization, OrgUnit, Locality}));
  1284.         ELSE IF present(base, LocalityName) THEN
  1285.                 return(search(base, one-level, s, {OrganisationName},
  1286.                         {substring, approx}, {Locality});
  1287.  
  1288.  
  1289.  
  1290. Hardcastle-Kille                                               [Page 23]
  1291.  
  1292. RFC 1484                  User Friendly Naming                 July 1993
  1293.  
  1294.  
  1295.         ELSE
  1296.                 return(search(base, one-level, s, {OrganisationName,120
  1297.                         LocalityName}, {substring, approx},
  1298.                         {Organisation, Locality}));
  1299. }
  1300. present(d:  DN; t:  AttributeType):  BOOLEAN
  1301. {
  1302.         FOR x IN d DO
  1303.                 IF x.type == t THEN return(TRUE);
  1304.         return(FALSE);                                             130
  1305. }
  1306.  
  1307. SearchScope := ENUMERATED (base-object, one-level, subtree)
  1308.  
  1309. leafSearch(base:  DN; s:  String; search-scope:  SearchScope)
  1310. {
  1311.         return(search(base, search-scope, s, {CommonName, Surname,
  1312.                 UserId}, {substring, approx}));
  1313. }
  1314.                                                                    140
  1315. search(base:  DN; search-scope:  SearchScope; s:  string;
  1316.         alist SET OF AttributeType; matchtypes SET OF MatchType
  1317.         objectClasses SET OF ObjectClass OPTIONAL): SET OF DN
  1318. {
  1319.         -- mapped onto Directory Search, with OR conjunction
  1320.         -- of filter items
  1321.  
  1322.         return dNSelect (s, search-results, alist);
  1323. }                                                                 150
  1324. read(base:  DN; alist SET OF AttributeType):  SET OF Attribute;
  1325. {
  1326.         -- mapped onto Directory Read
  1327.         -- Types repeated to deal with multiple values
  1328.         -- This would be implemented by returning selected info
  1329.         -- with the search operation
  1330. }
  1331. dNSelect(s:  String; dlist SET OF DN; alist:  SET OF AttributeType):
  1332. 16SET0OF DN
  1333. {
  1334.         exact, good:  SET OF DN;
  1335.  
  1336.         FOR x IN dlist DO
  1337.                 IF last(DN).Value == s THEN
  1338.                         exact += x;
  1339.                 ELSE IF FOR y IN read(x, alist) DO
  1340.                         IF y.value == s THEN
  1341.                                 good += x;
  1342.                                                                    170
  1343.  
  1344.  
  1345.  
  1346. Hardcastle-Kille                                               [Page 24]
  1347.  
  1348. RFC 1484                  User Friendly Naming                 July 1993
  1349.  
  1350.  
  1351.         IF exact != NULL THEN return(exact);
  1352.         IF good != NULL THEN return(good);
  1353.         return(userQuery(dlist));
  1354. }
  1355. userQuery(dlist SET OF DN): SET OF DN
  1356. {
  1357.         -- pass back up for manual checking                        180
  1358.         -- user can strip all matches to force progres....
  1359. }
  1360. head()    -- return first element of list
  1361. tail()    -- return list with first element removed
  1362. length()  -- return size of list
  1363. last()    -- return last element of list
  1364.  
  1365.                       Figure 2: Matching Algorithm
  1366. ______________________________________________________________________
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Hardcastle-Kille                                               [Page 25]
  1403.  
  1404.